home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / gucrtr13.lha / GUICreator1.3 / GUIC.lha / GUICreator / Demos / Calculator.c < prev    next >
C/C++ Source or Header  |  1995-08-22  |  24KB  |  496 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "Calculator_Includes.h"
  8. #include "Calculator.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Variables and Structures                                            */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. extern struct IntuitionBase   *IntuitionBase;
  17. extern struct GfxBase         *GfxBase;
  18.  
  19. extern struct Library *GadToolsBase ;
  20. extern struct Library *AslBase      ;
  21. extern struct Library *DataTypesBase;
  22.  
  23. /*************************************************************************/
  24. /*                                                                       */
  25. /*   Defines                                                             */
  26. /*                                                                       */
  27. /*************************************************************************/
  28.  
  29. #define RASTERX (GfxBase->DefaultFont->tf_XSize)
  30. #define RASTERY (GfxBase->DefaultFont->tf_YSize/2+4)
  31.  
  32. #define XSIZE(x)  ((x)*RASTERX)
  33. #define YSIZE(x)  ((x)*RASTERY)
  34.  
  35. #define XPOS(x)   (XSIZE(x)+customscreen->WBorLeft)
  36. #define YPOS(x)   (YSIZE(x)+customscreen->BarHeight+1)
  37.  
  38. #define ERROR_NO_WINDOW_OPENED      1001L
  39. #define ERROR_NO_PUBSCREEN_LOCKED   1002L
  40. #define ERROR_NO_GADGETS_CREATED    1003L
  41. #define ERROR_NO_VISUALINFO         1004L
  42. #define ERROR_NO_PICTURE_LOADED     1005L
  43. #define ERROR_NO_GADGETLIST_CREATED 1006L
  44. #define ERROR_NO_WINDOW_MENU        1007L
  45. #define ERROR_SCREEN_TOO_SMALL      1008L
  46. #define ERROR_LIST_NOT_INITIALIZED  1009L
  47. /// struct CalculatorWindowData
  48. struct CalculatorWindowData
  49.     {
  50.     BOOL    gd_Disabled_Gadget1;
  51.     BOOL    gd_Disabled_Gadget2;
  52.     BOOL    gd_Disabled_Gadget3;
  53.     BOOL    gd_Disabled_Gadget4;
  54.     BOOL    gd_Disabled_Gadget5;
  55.     BOOL    gd_Disabled_Gadget6;
  56.     BOOL    gd_Disabled_Gadget7;
  57.     BOOL    gd_Disabled_Gadget8;
  58.     BOOL    gd_Disabled_Gadget9;
  59.     BOOL    gd_Disabled_Gadget10;
  60.     BOOL    gd_Disabled_Gadget11;
  61.     BOOL    gd_Disabled_Gadget12;
  62.     BOOL    gd_Disabled_Gadget13;
  63.     BOOL    gd_Disabled_Gadget14;
  64.     BOOL    gd_Disabled_Gadget15;
  65.     BOOL    gd_Disabled_Gadget16;
  66.     BOOL    gd_Disabled_Gadget17;
  67.     BOOL    gd_Disabled_Gadget18;
  68.     BOOL    gd_Disabled_Gadget19;
  69.     BOOL    gd_Disabled_Gadget20;
  70.     BOOL    gd_Disabled_Gadget21;
  71.     LONG    gd_Number_Gadget21;
  72.     };
  73.  
  74. ///
  75.  
  76. /*************************************************************************/
  77. /*                                                                       */
  78. /*   Routines to handle gadgets                                          */
  79. /*                                                                       */
  80. /*************************************************************************/
  81.  
  82. /// HandleGadgetsCalculatorWindow()
  83.  
  84. void HandleGadgetsCalculatorWindow(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,struct CalculatorWindowData *gadgetdata,APTR userdata)
  85. {
  86.     switch(gadgetid)
  87.         {
  88.         case BTID_Gadget1:
  89.             Gadget1Clicked(win,wingads,gadgetid,messagecode,userdata);
  90.             break;
  91.         case BTID_Gadget2:
  92.             Gadget2Clicked(win,wingads,gadgetid,messagecode,userdata);
  93.             break;
  94.         case BTID_Gadget3:
  95.             Gadget3Clicked(win,wingads,gadgetid,messagecode,userdata);
  96.             break;
  97.         case BTID_Gadget4:
  98.             Gadget4Clicked(win,wingads,gadgetid,messagecode,userdata);
  99.             break;
  100.         case BTID_Gadget5:
  101.             Gadget5Clicked(win,wingads,gadgetid,messagecode,userdata);
  102.             break;
  103.         case BTID_Gadget6:
  104.             Gadget6Clicked(win,wingads,gadgetid,messagecode,userdata);
  105.             break;
  106.         case BTID_Gadget7:
  107.             Gadget7Clicked(win,wingads,gadgetid,messagecode,userdata);
  108.             break;
  109.         case BTID_Gadget8:
  110.             Gadget8Clicked(win,wingads,gadgetid,messagecode,userdata);
  111.             break;
  112.         case BTID_Gadget9:
  113.             Gadget9Clicked(win,wingads,gadgetid,messagecode,userdata);
  114.             break;
  115.         case BTID_Gadget10:
  116.             Gadget10Clicked(win,wingads,gadgetid,messagecode,userdata);
  117.             break;
  118.         case BTID_Gadget11:
  119.             Gadget11Clicked(win,wingads,gadgetid,messagecode,userdata);
  120.             break;
  121.         case BTID_Gadget12:
  122.             Gadget12Clicked(win,wingads,gadgetid,messagecode,userdata);
  123.             break;
  124.         case BTID_Gadget13:
  125.             Gadget13Clicked(win,wingads,gadgetid,messagecode,userdata);
  126.             break;
  127.         case BTID_Gadget14:
  128.             Gadget14Clicked(win,wingads,gadgetid,messagecode,userdata);
  129.             break;
  130.         case BTID_Gadget15:
  131.             Gadget15Clicked(win,wingads,gadgetid,messagecode,userdata);
  132.             break;
  133.         case BTID_Gadget16:
  134.             Gadget16Clicked(win,wingads,gadgetid,messagecode,userdata);
  135.             break;
  136.         case BTID_Gadget17:
  137.             Gadget17Clicked(win,wingads,gadgetid,messagecode,userdata);
  138.             break;
  139.         case BTID_Gadget18:
  140.             Gadget18Clicked(win,wingads,gadgetid,messagecode,userdata);
  141.             break;
  142.         case BTID_Gadget19:
  143.             Gadget19Clicked(win,wingads,gadgetid,messagecode,userdata);
  144.             break;
  145.         case BTID_Gadget20:
  146.             Gadget20Clicked(win,wingads,gadgetid,messagecode,userdata);
  147.             break;
  148.         case NBID_Gadget21:
  149.             Gadget21Clicked(win,wingads,gadgetid,messagecode,userdata);
  150.             break;
  151.         };
  152. }
  153. ///
  154.  
  155.  
  156. /*************************************************************************/
  157. /*                                                                       */
  158. /*   Routines to create gadgets                                          */
  159. /*                                                                       */
  160. /*************************************************************************/
  161.  
  162. /// CreateGadgetsCalculatorWindow()
  163. struct Gadget *CreateGadgetsCalculatorWindow(struct Gadget **gadgetlist,struct NewGadget newgad[],struct Gadget *wingads[],struct CalculatorWindowData *gadgetdata)
  164. {
  165.     struct Gadget *gadget=CreateContext(gadgetlist);
  166.     if (gadget)
  167.         {
  168.         wingads[BTID_Gadget1]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget1],GA_Disabled,gadgetdata->gd_Disabled_Gadget1,GT_Underscore,'_',TAG_END);
  169.         wingads[BTID_Gadget2]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget2],GA_Disabled,gadgetdata->gd_Disabled_Gadget2,GT_Underscore,'_',TAG_END);
  170.         wingads[BTID_Gadget3]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget3],GA_Disabled,gadgetdata->gd_Disabled_Gadget3,GT_Underscore,'_',TAG_END);
  171.         wingads[BTID_Gadget4]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget4],GA_Disabled,gadgetdata->gd_Disabled_Gadget4,GT_Underscore,'_',TAG_END);
  172.         wingads[BTID_Gadget5]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget5],GA_Disabled,gadgetdata->gd_Disabled_Gadget5,GT_Underscore,'_',TAG_END);
  173.         wingads[BTID_Gadget6]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget6],GA_Disabled,gadgetdata->gd_Disabled_Gadget6,GT_Underscore,'_',TAG_END);
  174.         wingads[BTID_Gadget7]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget7],GA_Disabled,gadgetdata->gd_Disabled_Gadget7,GT_Underscore,'_',TAG_END);
  175.         wingads[BTID_Gadget8]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget8],GA_Disabled,gadgetdata->gd_Disabled_Gadget8,GT_Underscore,'_',TAG_END);
  176.         wingads[BTID_Gadget9]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget9],GA_Disabled,gadgetdata->gd_Disabled_Gadget9,GT_Underscore,'_',TAG_END);
  177.         wingads[BTID_Gadget10]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget10],GA_Disabled,gadgetdata->gd_Disabled_Gadget10,GT_Underscore,'_',TAG_END);
  178.         wingads[BTID_Gadget11]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget11],GA_Disabled,gadgetdata->gd_Disabled_Gadget11,GT_Underscore,'_',TAG_END);
  179.         wingads[BTID_Gadget12]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget12],GA_Disabled,gadgetdata->gd_Disabled_Gadget12,GT_Underscore,'_',TAG_END);
  180.         wingads[BTID_Gadget13]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget13],GA_Disabled,gadgetdata->gd_Disabled_Gadget13,GT_Underscore,'_',TAG_END);
  181.         wingads[BTID_Gadget14]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget14],GA_Disabled,gadgetdata->gd_Disabled_Gadget14,GT_Underscore,'_',TAG_END);
  182.         wingads[BTID_Gadget15]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget15],GA_Disabled,gadgetdata->gd_Disabled_Gadget15,GT_Underscore,'_',TAG_END);
  183.         wingads[BTID_Gadget16]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget16],GA_Disabled,gadgetdata->gd_Disabled_Gadget16,GT_Underscore,'_',TAG_END);
  184.         wingads[BTID_Gadget17]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget17],GA_Disabled,gadgetdata->gd_Disabled_Gadget17,GT_Underscore,'_',TAG_END);
  185.         wingads[BTID_Gadget18]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget18],GA_Disabled,gadgetdata->gd_Disabled_Gadget18,GT_Underscore,'_',TAG_END);
  186.         wingads[BTID_Gadget19]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget19],GA_Disabled,gadgetdata->gd_Disabled_Gadget19,GT_Underscore,'_',TAG_END);
  187.         wingads[BTID_Gadget20]=gadget=CreateGadget(BUTTON_KIND,gadget,&newgad[BTID_Gadget20],GA_Disabled,gadgetdata->gd_Disabled_Gadget20,GT_Underscore,'_',TAG_END);
  188.         wingads[NBID_Gadget21]=gadget=CreateGadget(NUMBER_KIND,gadget,&newgad[NBID_Gadget21],GA_Disabled,gadgetdata->gd_Disabled_Gadget21,GTNM_Number,gadgetdata->gd_Number_Gadget21,GTNM_Border,TRUE,GTNM_Justification,GTJ_RIGHT,TAG_END);
  189.         return gadget;
  190.         }
  191.     else return NULL;
  192. }
  193. ///
  194.  
  195.  
  196. /*************************************************************************/
  197. /*                                                                       */
  198. /*   Routines to handle windows                                          */
  199. /*                                                                       */
  200. /*************************************************************************/
  201.  
  202.  
  203. /// HandleCalculatorWindow()
  204. void HandleCalculatorWindow(struct Screen *customscreen,LONG left,LONG top,APTR userdata)
  205. {
  206.     APTR visualinfo=GetVisualInfo(customscreen,TAG_DONE);
  207.     if (visualinfo)
  208.         {
  209.         struct Gadget  *gadgetlist = NULL;
  210.         struct Menu    *menustrip  = NULL;
  211.         ULONG height=16,width=26,maxheight=1024,maxwidth=1280;
  212.  
  213.         struct Gadget *wingads[21];
  214.  
  215.         char * title                  = "Calculator";
  216.         struct Window     *win        = NULL;
  217.  
  218.         struct TextAttr   textattr    = { GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name,GfxBase->DefaultFont->tf_YSize,FS_NORMAL,FPF_DISKFONT };
  219.  
  220.         struct NewGadget  newgad[]    = {
  221.                                                      XPOS(1),YPOS(4),XSIZE(4),YSIZE(2),"7",&textattr,BTID_Gadget1,PLACETEXT_IN,visualinfo,NULL,
  222.                                                      XPOS(6),YPOS(4),XSIZE(4),YSIZE(2),"8",&textattr,BTID_Gadget2,PLACETEXT_IN,visualinfo,NULL,
  223.                                                      XPOS(11),YPOS(4),XSIZE(4),YSIZE(2),"9",&textattr,BTID_Gadget3,PLACETEXT_IN,visualinfo,NULL,
  224.                                                      XPOS(1),YPOS(7),XSIZE(4),YSIZE(2),"4",&textattr,BTID_Gadget4,PLACETEXT_IN,visualinfo,NULL,
  225.                                                      XPOS(6),YPOS(7),XSIZE(4),YSIZE(2),"5",&textattr,BTID_Gadget5,PLACETEXT_IN,visualinfo,NULL,
  226.                                                      XPOS(11),YPOS(7),XSIZE(4),YSIZE(2),"6",&textattr,BTID_Gadget6,PLACETEXT_IN,visualinfo,NULL,
  227.                                                      XPOS(1),YPOS(10),XSIZE(4),YSIZE(2),"1",&textattr,BTID_Gadget7,PLACETEXT_IN,visualinfo,NULL,
  228.                                                      XPOS(6),YPOS(10),XSIZE(4),YSIZE(2),"2",&textattr,BTID_Gadget8,PLACETEXT_IN,visualinfo,NULL,
  229.                                                      XPOS(11),YPOS(10),XSIZE(4),YSIZE(2),"3",&textattr,BTID_Gadget9,PLACETEXT_IN,visualinfo,NULL,
  230.                                                      XPOS(16),YPOS(4),XSIZE(4),YSIZE(2),"CA",&textattr,BTID_Gadget10,PLACETEXT_IN,visualinfo,NULL,
  231.                                                      XPOS(21),YPOS(4),XSIZE(4),YSIZE(2),"CE",&textattr,BTID_Gadget11,PLACETEXT_IN,visualinfo,NULL,
  232.                                                      XPOS(16),YPOS(7),XSIZE(4),YSIZE(2),"·",&textattr,BTID_Gadget12,PLACETEXT_IN,visualinfo,NULL,
  233.                                                      XPOS(21),YPOS(7),XSIZE(4),YSIZE(2),":",&textattr,BTID_Gadget13,PLACETEXT_IN,visualinfo,NULL,
  234.                                                      XPOS(16),YPOS(10),XSIZE(4),YSIZE(2),"+",&textattr,BTID_Gadget14,PLACETEXT_IN,visualinfo,NULL,
  235.                                                      XPOS(21),YPOS(10),XSIZE(4),YSIZE(2),"-",&textattr,BTID_Gadget15,PLACETEXT_IN,visualinfo,NULL,
  236.                                                      XPOS(1),YPOS(13),XSIZE(4),YSIZE(2),"0",&textattr,BTID_Gadget16,PLACETEXT_IN,visualinfo,NULL,
  237.                                                      XPOS(6),YPOS(13),XSIZE(4),YSIZE(2),".",&textattr,BTID_Gadget17,PLACETEXT_IN,visualinfo,NULL,
  238.                                                      XPOS(11),YPOS(13),XSIZE(4),YSIZE(2),"«",&textattr,BTID_Gadget18,PLACETEXT_IN,visualinfo,NULL,
  239.                                                      XPOS(16),YPOS(13),XSIZE(4),YSIZE(2),"±",&textattr,BTID_Gadget19,PLACETEXT_IN,visualinfo,NULL,
  240.                                                      XPOS(21),YPOS(13),XSIZE(4),YSIZE(2),"=",&textattr,BTID_Gadget20,PLACETEXT_IN,visualinfo,NULL,
  241.                                                      XPOS(1),YPOS(1),XSIZE(24),YSIZE(2),NULL,&textattr,NBID_Gadget21,PLACETEXT_LEFT,visualinfo,NULL,
  242.                                                   };
  243.  
  244.  
  245.         struct CalculatorWindowData gadgetdata = {
  246.                                                      /* belongs to a button */
  247.                                                      FALSE,
  248.                                                      /* belongs to a button */
  249.                                                      FALSE,
  250.                                                      /* belongs to a button */
  251.                                                      FALSE,
  252.                                                      /* belongs to a button */
  253.                                                      FALSE,
  254.                                                      /* belongs to a button */
  255.                                                      FALSE,
  256.                                                      /* belongs to a button */
  257.                                                      FALSE,
  258.                                                      /* belongs to a button */
  259.                                                      FALSE,
  260.                                                      /* belongs to a button */
  261.                                                      FALSE,
  262.                                                      /* belongs to a button */
  263.                                                      FALSE,
  264.                                                      /* belongs to a button */
  265.                                                      FALSE,
  266.                                                      /* belongs to a button */
  267.                                                      FALSE,
  268.                                                      /* belongs to a button */
  269.                                                      FALSE,
  270.                                                      /* belongs to a button */
  271.                                                      FALSE,
  272.                                                      /* belongs to a button */
  273.                                                      FALSE,
  274.                                                      /* belongs to a button */
  275.                                                      FALSE,
  276.                                                      /* belongs to a button */
  277.                                                      FALSE,
  278.                                                      /* belongs to a button */
  279.                                                      FALSE,
  280.                                                      /* belongs to a button */
  281.                                                      FALSE,
  282.                                                      /* belongs to a button */
  283.                                                      FALSE,
  284.                                                      /* belongs to a button */
  285.                                                      FALSE,
  286.                                                      /* belongs to a number gadget */
  287.                                                      FALSE,
  288.                                                      0,
  289.                                                   };
  290.  
  291.  
  292.         struct NewMenu    menu[]      = {
  293.                                                      NM_TITLE, "Program",0,0,0,0,
  294.                                                      NM_ITEM ,"About","A",0,0,0,
  295.                                                     };
  296.         height= YSIZE(height);
  297.         width = XSIZE(width) ;
  298.         if (left == -1) left  = (customscreen->Width-width)/2;
  299.         if (top  == -1) top   = (customscreen->Height-height)/2;
  300.  
  301.         if (CreateGadgetsCalculatorWindow(&gadgetlist,newgad,wingads,&gadgetdata) != NULL)
  302.             {
  303.             if (height>customscreen->Height || width>customscreen->Width) GUIC_ErrorReport(NULL,ERROR_SCREEN_TOO_SMALL);
  304.             win=OpenWindowTags(NULL,WA_Activate,         TRUE,
  305.                                             WA_CloseGadget,      TRUE,
  306.                                             WA_DepthGadget,      TRUE,
  307.                                             WA_SizeGadget,       TRUE,
  308.                                             WA_DragBar,          TRUE,
  309.                                             WA_Gadgets,          gadgetlist,
  310.                                             WA_InnerHeight,      height,
  311.                                             WA_InnerWidth,       width,
  312.                                             WA_IDCMP,            IDCMP_CLOSEWINDOW|IDCMP_NEWSIZE|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_MENUPICK|BUTTONIDCMP,
  313.                                             WA_Left,             left,
  314.                                             WA_Top,              top,
  315.                                             WA_MaxHeight,        maxheight,
  316.                                             WA_MinHeight,        height,
  317.                                             WA_MaxWidth,         maxwidth,
  318.                                             WA_MinWidth,         width,
  319.                                             WA_SizeBRight,       FALSE,
  320.                                             WA_SizeBBottom,      TRUE,
  321.                                             WA_SmartRefresh,     TRUE,
  322.                                             WA_CustomScreen,     customscreen,
  323.                                             WA_Title,            title,
  324.                                             WA_NewLookMenus,     TRUE,
  325.                                             TAG_END);
  326.             if (win)
  327.                 {
  328.                 menustrip=CreateMenus(menu,GTMN_NewLookMenus,TRUE,TAG_END);
  329.                 if (menustrip)
  330.                     {
  331.                     if (LayoutMenus(menustrip,visualinfo,GTMN_NewLookMenus,TRUE,TAG_END))
  332.                         {
  333.                         if (SetMenuStrip(win,menustrip))
  334.                             {
  335.                             struct IntuiMessage  *imessage   = NULL;
  336.                             struct Gadget        *idcmpgad   = NULL;
  337.                             struct NewGadget     ngcopy[]    = newgad;
  338.                             long   double        xscale      = 1.0;
  339.                             long   double        yscale      = 1.0;
  340.                             ULONG                i           = 0;
  341.                             ULONG                gadgetcount = 21;
  342.                             ULONG  idcmpclass                = 0;
  343.                             UWORD  messagecode               = 0;
  344.                             BOOL   running                   = TRUE;
  345.                             ULONG  signal                    = 0;
  346.                             ULONG  longpointer1              = 0;
  347.                             ULONG  longpointer2              = 0;
  348.  
  349.                             SetFont(win->RPort,GfxBase->DefaultFont);
  350.  
  351.                             GT_RefreshWindow(win,NULL);
  352.  
  353.                             do
  354.                                 {
  355.                                 WindowLimits(win,width+win->BorderLeft+win->BorderRight,height+win->BorderTop+win->BorderBottom,maxwidth,maxheight);
  356.                                 if (running) signal=Wait(SIGBREAKF_CTRL_C | 1L << win->UserPort->mp_SigBit);
  357.                                 if (signal & SIGBREAKF_CTRL_C) running=FALSE;
  358.                                 WindowLimits(win,win->Width,win->Height,win->Width,win->Height);
  359.                                 while (running && (imessage=GT_GetIMsg(win->UserPort)))
  360.                                     {
  361.                                     idcmpgad=(struct Gadget *)imessage->IAddress;
  362.                                     idcmpclass=imessage->Class;
  363.                                     messagecode =imessage->Code;
  364.  
  365.                                     GT_ReplyIMsg(imessage);
  366.  
  367.                                     switch(idcmpclass)
  368.                                         {
  369.                                         case IDCMP_REFRESHWINDOW:
  370.                                             GT_BeginRefresh(win);
  371.                                             GT_EndRefresh(win,TRUE);
  372.                                             break;
  373.                                         case IDCMP_MENUPICK:
  374.                                             switch(MENUNUM(messagecode))
  375.                                                 {
  376.                                                 case 0:
  377.                                                     switch (ITEMNUM(messagecode))
  378.                                                         {
  379.                                                         case 0:
  380.                                                             About(win,wingads,userdata);
  381.                                                             break;
  382.                                                         }
  383.                                                     break;
  384.                                                 }
  385.                                             break;
  386.                                         case IDCMP_NEWSIZE:
  387.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget1],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  388.                                             gadgetdata.gd_Disabled_Gadget1=(longpointer1 == 0)?FALSE:TRUE;
  389.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget2],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  390.                                             gadgetdata.gd_Disabled_Gadget2=(longpointer1 == 0)?FALSE:TRUE;
  391.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget3],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  392.                                             gadgetdata.gd_Disabled_Gadget3=(longpointer1 == 0)?FALSE:TRUE;
  393.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget4],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  394.                                             gadgetdata.gd_Disabled_Gadget4=(longpointer1 == 0)?FALSE:TRUE;
  395.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget5],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  396.                                             gadgetdata.gd_Disabled_Gadget5=(longpointer1 == 0)?FALSE:TRUE;
  397.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget6],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  398.                                             gadgetdata.gd_Disabled_Gadget6=(longpointer1 == 0)?FALSE:TRUE;
  399.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget7],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  400.                                             gadgetdata.gd_Disabled_Gadget7=(longpointer1 == 0)?FALSE:TRUE;
  401.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget8],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  402.                                             gadgetdata.gd_Disabled_Gadget8=(longpointer1 == 0)?FALSE:TRUE;
  403.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget9],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  404.                                             gadgetdata.gd_Disabled_Gadget9=(longpointer1 == 0)?FALSE:TRUE;
  405.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget10],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  406.                                             gadgetdata.gd_Disabled_Gadget10=(longpointer1 == 0)?FALSE:TRUE;
  407.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget11],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  408.                                             gadgetdata.gd_Disabled_Gadget11=(longpointer1 == 0)?FALSE:TRUE;
  409.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget12],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  410.                                             gadgetdata.gd_Disabled_Gadget12=(longpointer1 == 0)?FALSE:TRUE;
  411.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget13],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  412.                                             gadgetdata.gd_Disabled_Gadget13=(longpointer1 == 0)?FALSE:TRUE;
  413.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget14],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  414.                                             gadgetdata.gd_Disabled_Gadget14=(longpointer1 == 0)?FALSE:TRUE;
  415.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget15],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  416.                                             gadgetdata.gd_Disabled_Gadget15=(longpointer1 == 0)?FALSE:TRUE;
  417.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget16],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  418.                                             gadgetdata.gd_Disabled_Gadget16=(longpointer1 == 0)?FALSE:TRUE;
  419.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget17],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  420.                                             gadgetdata.gd_Disabled_Gadget17=(longpointer1 == 0)?FALSE:TRUE;
  421.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget18],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  422.                                             gadgetdata.gd_Disabled_Gadget18=(longpointer1 == 0)?FALSE:TRUE;
  423.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget19],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  424.                                             gadgetdata.gd_Disabled_Gadget19=(longpointer1 == 0)?FALSE:TRUE;
  425.                                             GT_GetGadgetAttrs(wingads[BTID_Gadget20],win,NULL,GA_Disabled,&longpointer1,TAG_END);
  426.                                             gadgetdata.gd_Disabled_Gadget20=(longpointer1 == 0)?FALSE:TRUE;
  427.                                             GT_GetGadgetAttrs(wingads[NBID_Gadget21],win,NULL,GA_Disabled,&longpointer1,GTNM_Number,&longpointer2,TAG_END);
  428.                                             gadgetdata.gd_Disabled_Gadget21=(longpointer1 == 0)?FALSE:TRUE;
  429.                                             gadgetdata.gd_Number_Gadget21=longpointer2;
  430.  
  431.                                             RemoveGList(win,gadgetlist,-1);
  432.                                             SetAPen(win->RPort,0L);
  433.                                             RectFill(win->RPort,win->BorderLeft,win->BorderTop,win->Width-win->BorderRight-1,win->Height-win->BorderBottom-1);
  434.                                             RefreshWindowFrame(win);
  435.  
  436.                                             xscale=(long double)win->Width /(long double)(width+win->BorderLeft+win->BorderRight);
  437.                                             yscale=(long double)win->Height/(long double)(height+win->BorderTop+win->BorderBottom);
  438.                                             for (i=0;i<gadgetcount;i++)
  439.                                                 {
  440.                                                 ngcopy[i].ng_LeftEdge=(WORD)((long double)newgad[i].ng_LeftEdge*xscale);
  441.                                                 ngcopy[i].ng_TopEdge =(WORD)((long double)newgad[i].ng_TopEdge *yscale);
  442.                                                 ngcopy[i].ng_Width   =(WORD)((long double)newgad[i].ng_Width   *xscale);
  443.                                                 ngcopy[i].ng_Height  =(WORD)((long double)newgad[i].ng_Height  *yscale);
  444.                                                 }
  445.  
  446.                                             FreeGadgets(gadgetlist);
  447.                                             gadgetlist=NULL;
  448.  
  449.                                             CreateGadgetsCalculatorWindow(&gadgetlist,ngcopy,wingads,&gadgetdata);
  450.                                             AddGList(win,gadgetlist,-1,-1,NULL);
  451.                                             RefreshGList(gadgetlist,win,NULL,-1);
  452.                                             GT_RefreshWindow(win,NULL);
  453.  
  454.                                             break;
  455.                                         case IDCMP_VANILLAKEY:
  456.                                             switch(messagecode)
  457.                                                 {
  458.                                                 case 27:
  459.                                                     running=FALSE;
  460.                                                     break;
  461.                                                 }
  462.                                             break;
  463.                                         case IDCMP_CLOSEWINDOW:
  464.                                             running=FALSE;
  465.                                             break;
  466.                                         case IDCMP_GADGETUP:
  467.                                         case MXIDCMP:
  468.                                             HandleGadgetsCalculatorWindow(win,wingads,idcmpgad->GadgetID,messagecode,&gadgetdata,userdata);
  469.                                             break;
  470.                                         }
  471.                                     /* end-switch */
  472.                                     }
  473.                                 /* end-while */
  474.                                 }
  475.                             while (running);
  476.                             ClearMenuStrip(win);
  477.                             }
  478.                         else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  479.                         }
  480.                     else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  481.                     FreeMenus(menustrip);
  482.                     }
  483.                 else GUIC_ErrorReport(win,ERROR_NO_WINDOW_MENU);
  484.                 if (win) CloseWindow(win);
  485.                 }
  486.             else GUIC_ErrorReport(win,ERROR_NO_WINDOW_OPENED);
  487.             if (gadgetlist) FreeGadgets(gadgetlist);
  488.             }
  489.         else GUIC_ErrorReport(NULL,ERROR_NO_GADGETS_CREATED);
  490.         if (visualinfo) FreeVisualInfo(visualinfo);
  491.         }
  492.     else GUIC_ErrorReport(NULL,ERROR_NO_VISUALINFO);
  493. }
  494. ///
  495.  
  496.